#! /usr/bin/env bash

# file      : build/c/gnu/dep
# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
# license   : GNU GPL v2; see accompanying LICENSE file

# Post-process generated dependency information.
#
# $1       current project's $(out_base)
# $2 - $N  optional .cpp-options files

out_base=$1
shift

files=$*

#echo $out_base
#echo $files

script=

function gen_script ()
{
  while [ "$1" ]; do
    prefix=$1
    shift

    path=$1
    shift

    # Besides unresolved paths also replace default installation
    # targets (/usr/include and /usr/local/include).
    #
    script="$script"\
"s \\ $prefix \\ $path$prefix g;"\
"s \\ /usr/include/$prefix \\ $path$prefix g;"\
"s \\ /usr/local/include/$prefix \\ $path$prefix g;"\
"s ^$prefix $path$prefix ;"\
"s ^/usr/include/$prefix $path$prefix ;"\
"s ^/usr/local/include/$prefix $path$prefix ;"
  done
}

if [ "$files" ]; then
  prefixes=`sed -e 's%^prefix: \(.*\)$%\1%' -e t -e d $files`
  gen_script $prefixes
fi

# The last part of the script translates all file names that don't start
# with / or . (that is, local generated files) to files in $out_base. Note
# that it is assumed that such files are never installed and therefore there
# is no way to get around the situation where this file is picket up from
# some other place (e.g., /usr/include).
#
epilogue="s% \([^/. \\\\]\)% $out_base/\1%g;s%^\([^/. ].*:\)%$out_base/\1%"

exec sed -e "$script$epilogue"
